package portes;

import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Porte extends Remote {
	// Informations définies "en dur" et accessibles par toutes les classes
	public static int nombreportes = 3;
	public static int nombreplacesinitial = 2;
	
	// Méthodes appelées par ServeurVoituresImpl
	public void demandeEntree() throws RemoteException, InterruptedException;
	public void demandeSortie() throws RemoteException, InterruptedException;
	
	// Deux méthodes pour gérer la communication entre portes
	// Reception : méthode appelée par ResoImpl
	public void receiveMessage(int from, int to, Serializable msg) throws RemoteException;
	// Envoi : méthode appelée par l'algorithme encapsulé pour transmission
	public void sendMessage(int from, int to, Serializable msg) throws RemoteException;

	// Méthode appelée au démarrage, lorsque toutes les portes sont déclarées
	public void init() throws RemoteException;
}